Item 1: 视C++为一个语言联邦

C++是个多重范型编程语言:

  • 过程形式(procedural)
  • 面向对象形式(object-oriented)
  • 函数形式(functional)
  • 泛型形式(generic)
  • 元编程形式(metaprogramming)

C++拥有多种特性,可视作多种语言的组合,为了理解C++必须认识其主要的次语言:

  • C语言:C++仍是以C为基础的。很多时候C++对问题的解法是较高级的C解法,只是缺乏高效编程部分:没有模板、没有异常、没有重载
  • Object-Oriented C++:面向对象设计之古典守则在C++上的最直接实施:classes(包括构造与析构)、封装、继承、多态、virtual函数(动态绑定)。
  • Template C++:这是C++的泛型编程部分。template非常强大,带来了新的编程范式:template metaprogramming(TMP,模板元编程)
  • STL:STL是一个模板程序库,它对容器、迭代器和算法以及函数对象的规约有极佳的紧密配合与协调,使用STL时需要遵循它的规约。templates与程序库也可以其它想法构建出来。

总结:

  • 对C++的规范约束并不是统一的,得分使用情况,比如,对使用面向对象编程和使用泛型编程,其规约并不是一样的
  • C++ 高效编程守则视状况而变化,取决于使用C++的哪一部分